<head>
<script src="../../../resources/js-test.js"></script>
<script>
var nrmouseclicks = 0; // small hack to distinguish between clicks
var ev;
function mouseev(event) {
    if (nrmouseclicks == 0) {
        shouldBe("event.clientX", "50");
        shouldBe("event.clientY", "50");
        shouldBe("event.pageX", "50");
        shouldBe("event.pageY", "50");
        shouldBe("event.layerX", "50");
        shouldBe("event.layerY", "50");
        shouldBe("event.offsetX", "42");
        shouldBe("event.offsetY", "42");
        nrmouseclicks++;
    } else if (nrmouseclicks == 1) {
        shouldBe("event.clientX", "50");
        shouldBe("event.clientY", "50");
        shouldBe("event.pageX", "50");
        shouldBe("event.pageY", "550");
        shouldBe("event.layerX", "50");
        shouldBe("event.layerY", "550");
        shouldBe("event.offsetX", "42");
        shouldBe("event.offsetY", "542");
        nrmouseclicks++;
    } else if (nrmouseclicks == 2) {
        shouldBe("event.clientX", "50");
        shouldBe("event.clientY", "50");
        shouldBe("event.pageX", "550");
        shouldBe("event.pageY", "50");
        shouldBe("event.layerX", "550");
        shouldBe("event.layerY", "50");
        shouldBe("event.offsetX", "542");
        shouldBe("event.offsetY", "42");
        nrmouseclicks++;

        // test initMouseEvent
        window.scrollTo(500, 500);
        ev = document.createEvent("MouseEvent");
        ev.initMouseEvent("mousedown", true, true, document.defaultView, 1, 50, 50, 50, 50, false, false, false, false, 0, document);
        var child = document.getElementById('target');
        child.dispatchEvent(ev);
    } else {
        shouldBe("ev.clientX", "50");
        shouldBe("ev.clientY", "50");
        shouldBe("ev.pageX", "550");
        shouldBe("ev.pageY", "550");
        shouldBe("ev.layerX", "550");
        shouldBe("ev.layerY", "550");
        shouldBe("ev.offsetX", "542");
        shouldBe("ev.offsetY", "542");
    }
}
function test() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        // test a normal mouse to
        eventSender.mouseMoveTo(50, 50);
        eventSender.mouseDown();
        eventSender.mouseUp();

        // now scroll a bit down and verify that clientY does not change
        window.scrollTo(0, 500);
        eventSender.mouseDown();
        eventSender.mouseUp();

        // now scroll a bit to the right and verify that clientX does not change
        window.scrollTo(500, 0);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
}
</script>
</head>
<body onload="test()">
<div id="target" style="background: red; width:2000px; height: 2000px" onmousedown="mouseev(event)">
</div>
<div id="console"></div>
</body>
